array = [] vs array.length = 0
There are two ways to empty an array:
arr.length = 0;
arr = [];
Difference
Setting arr = []
creates a new array and doesn't affect other references.
let foo = ['hello', 'world'];
let bar = foo;
foo = [];
console.log(bar);
On the other hand, arr.length = 0
modifies the array. All references are affected.
let foo = ['hello', 'world'];
let bar = foo;
foo.length = 0;
console.log(bar);
Good to know
-
There is another, less popular approach to empty an array:
arr.splice(0, arr.length);
This method affects other references. Since .splice
returns an array of removed items, you can get a copy of original array by assigning the result to a new variable:
let foo = ['hello', 'world'];
let bar = foo.splice(0, foo.length);
console.log(foo);
console.log(bar);
-
If the array is declared as a constant, then you can't reassign it to []
.
const foo = [1, 2, 3];
foo = [];
foo.length = 0;